//
//  HomeDataModel.swift
//  新浪微博项目
//
//  Created by 王炯 on 16/7/23.
//  Copyright © 2016年 王炯. All rights reserved.
//

import UIKit

class HomeDataModel: NSObject
{

    //首页微博上需要显示的内容
    //(1)微博创建时间
    var created_at:String?
    
    //(2)微博ID(一定要注明是INt64类型的)
    var id: Int64 = 0
    
    //(3)微博正文
    var text: String?
    //(4)微博来源
    var source: String?
    
    
    //(5)保存每一条微博的用户信息
    var user:UserModel?
    
    //(6)转发微博(对象为HomeDataModel类型)
    var retweeted_status:HomeDataModel?
    
    
    //(7)配图的图片数组
    //配图的图片数组，无论当前微博有没有配图，这个数组一般是一定存在的
    var pic_urls:[PictureModel]?
    
    //(8)转发数
    var reposts_count: Int = 0
    //(9)评论数
    var comments_count: Int = 0
    //(10)表态数
    var attitudes_count: Int = 0
    
    
    //定义一个字典转模型的构造函数
    init(dict:[String:AnyObject])
    {
        super.init()
        
        self.setValuesForKeysWithDictionary(dict)
    }

    
    //在此重写setValueForKey方法，用于解决用户信息的字典转模型
    override func setValue(value: AnyObject?, forKey key: String)
    {
    
        //如果是user信息
        if key == "user"
        {
            //传入的value是一个字典
            guard let v = value as? [String: AnyObject] else
            {
                return
            }
            
            //字典转模型
            self.user = UserModel(dict:v)
        }
        //如果是pic_urls(传入的是图片数组)
        else if key == "pic_urls"
        {
            //传入的value是一个字典数组
            guard let v = value as? [[String: AnyObject]] else
            {
                return
            }
            
            //创建一个临时的可变图片数组，用于存放PictureModel数据
            var temArray:[PictureModel] = [PictureModel]()
            
            //遍历v数组之后，字典转模型
            for dict in v
            {
                //字典转模型
                let picture:PictureModel = PictureModel(dict: dict)
                
                //将字典加入到字典数组中
                temArray.append(picture)
            }
            
            //返回图片模型数组
            self.pic_urls = temArray
        }
        //HomeDataModel类型的数据
        else if key == "retweeted_status"
        {
            //正常的将获取到的字典转模型(利用获取到的key--->对应的属性)
            super.setValue(value, forKey: key)
            
            //继续讲value字典转模型
            guard let v = value as? [String: AnyObject] else
            {
                return
            }
            //重新再来一次调用本方法的字典转模型(递归)
            retweeted_status = HomeDataModel(dict: v)

        }
        else
        {
            //正常的将获取到的字典转模型(利用获取到的key--->对应的属性)
            super.setValue(value, forKey: key)
        }
        
    }
    
    
    
    //对于未能字典转模型的Key值
    override func setValue(value: AnyObject?, forUndefinedKey key: String)
    {
        
    }
}
